﻿using System.Collections;
using System.Collections.Generic;
using CalcSharp.Core.Containers;

namespace CalcSharp.Core.Plugin
{
    /// <summary>
    /// Plugin Interface. All Plugins you create must implement a class based on IPlugin
    /// </summary>
    public interface ICMDPlugin
    {
        /// <summary>
        /// The main Execution code of the plugin. Returns a Double as a result of calculation.
        /// This function is called when user enters the plugin execution name to the program.
        /// </summary>
        /// <param name="parameters">Parameters passed from the terminal to the plugin.</param>
        /// <returns></returns>
        Tresult Run(ArrayList parameters);
        /// <summary>
        /// The Plugin name, wich is the Execution alias of the plugin
        /// </summary>
        string Name { get; }
        /// <summary>
        /// Autocomplete commands list
        /// </summary>
        Dictionary<string, string> autocomplete { get; }
        /// <summary>
        /// A Small help of the plugin.
        /// </summary>
        string Help { get; }
        /// <summary>
        /// Host aplication can be accesed using this property
        /// </summary>
        IPluginHost Host { get; set; }
    }
}
